Storage class memory is a type of persistent memory that uses technologies such as resistive Random Access Memory (RAM), Phase Change Memory, Magnetic RAM, Ferroelectric RAM, or flash-based memory cells, among other technologies. Storage class memory can have read performance that is comparable to Dynamic Random Access Memory (DRAM) and write performance that is significantly faster than technologies used for hard drives. Storage class memory can thus be used for processor memory, in place of or in addition to DRAM and RAM-based technologies, which have been the primary technologies used for processor memory.
Similar to flash-based memory, storage class memory can suffer from wear: the gradual breakdown of the storage cells until the storage cells are no longer able to reliably store data. To manage the wear, a server system can include a memory controller that can execute wear leveling operations. Wear leveling can include, for a same address, determining to write the data for the address to different blocks at different times. Wear leveling can also include moving data from worn out blocks to blocks that are more reliable, and vice versa.